package com.sgcc.pda.util;

import android.content.Context;

import com.sgcc.pda.data.dao.ContentProviderDao;
import com.sgcc.pda.data.dao.impl.ContentProviderDaoImpl;
import com.sgcc.pda.data.entity.base.AppInfo;
import com.sgcc.pda.data.entity.base.BehaviorTrajectoryInfo;
import com.sgcc.pda.data.entity.base.ExceptionInfo;
import com.sgcc.pda.data.entity.base.RegisterInfo;
import com.sgcc.pda.data.entity.base.SharepreferenceInfo;
import com.sgcc.pda.sdk.entity.BaseTaskInfo;

import java.util.ArrayList;
import java.util.List;

/**
 * @创建者：suven on 2020/3/24 10:45
 * @描述：内容提供者工具类.
 * @版本：1.0
 * @修改人：
 * @修改时间：
 * @修改说明：
 * @修改版本：
 */
public class ContentProviderUtil {

    private static ContentProviderDao getContentProviderDao(){
        return ContentProviderDaoImpl.getInstance();
    }

    public static void setSharepreference(Context context, SharepreferenceInfo info){
        getContentProviderDao().setSharepreference(context,info);
    }

    /**
     * 获取存储在Data应用中sp的String值
     * @param context
     * @param key
     * @return
     */
    public static String getSharepreferenceValue(Context context, String editKey, String key){
        return getContentProviderDao().getSharepreferenceValue(context,editKey,key);
    }

    /**
     * 获取存储在Data应用中sp的boolean值
     * @param context
     * @param key
     * @return
     */
    public static boolean getSharepreferenceBooleanValue(Context context, String editKey, String key){
        return getContentProviderDao().getSharepreferenceBooleanValue(context,editKey,key);
    }


    /**
     * 保存错误信息
     * @param context
     * @param info
     */
    public static void saveExceptionInfo(Context context, ExceptionInfo info){
        getContentProviderDao().saveExceptionInfo(context,info);
    }

    /**
     * 获取所有需要安装的应用
     * @param context
     * @return
     */
    public static List<AppInfo> getAppInfoListNeededInstall(Context context){
        return getContentProviderDao().getAppInfoListNeededInstall(context);
    }

    /**
     * 获取到安卓单元的注册标识信息
     * @param context
     * @return  默认使用查询到的第一个
     */
    public static RegisterInfo getRegisterInfoList(Context context, String REG_IDX){
        List<RegisterInfo> registerInfoList = getContentProviderDao().getRegisterInfoList(context, REG_IDX);
        if(registerInfoList==null||registerInfoList.size()<=0){
            return null;
        }
        return registerInfoList.get(0);
    }

    /**
     * 更新app的增量更新状态
     */
    public static void setAppAddUpdateState(Context context, String packageName, String appAddUpdate){
        getContentProviderDao().saveAddOrUpdateAppBaseInfoState(context,packageName,appAddUpdate);
    }

    /**
     * 获取基础工单信息列表
     * @param context
     * @param selectArgs 获取全部工单{"0"}
     *                   获取逾期工单{"1","当前时间戳"}
     *                   获取紧急工单{"2","当前时间戳"}
     *                   获取一般工单{"3","当前时间戳"}
     */
    public static List<BaseTaskInfo> getBaseTaskInfoList(Context context, String[] selectArgs){
        return getContentProviderDao().getBaseTaskInfoList(context,selectArgs);
    }


    /**
     * 1保存用户行为轨迹 2开关锁上传信息 3：记录电表执行时长及设备信息
     * @param context
     * @param info
     */
    public static void saveBehaviorTrajectoryInfo(final Context context, final BehaviorTrajectoryInfo info){
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                getContentProviderDao().saveBehaviorTrajectoryInfoContext(context, info);
            }
        };
        FixedThreadUtil.executeThread(runnable);
    }
    /**
     * 1删除用户行为轨迹信息 2删除开关锁上传信息 3：记录电表执行时长及设备信息
     * @param mContext
     */
    public static void deleteBehaviorTrajectoryInfo(Context mContext, String businessIdentification, String sonBusinessIdentification) {
        getContentProviderDao().deleteBehaviorTrajectoryInfo(mContext,businessIdentification,sonBusinessIdentification);
    }
    /**
     * 更新用户行为轨迹信息
     * @param mContext
     */
    public static boolean updateBehaviorTrajectoryInfo(Context mContext, String id) {
        return getContentProviderDao().updateBehaviorTrajectoryInfo(mContext,id);
    }
    /**
     * 1查询用户行为轨迹信息 2查询开关锁上传信息 3：记录电表执行时长及设备信息
     * @param mContext
     */
    public static ArrayList<BehaviorTrajectoryInfo> getBehaviorTrajectoryInfo(Context mContext, String businessIdentification, String sonBusinessIdentification) {
        return  getContentProviderDao().getBehaviorTrajectoryInfo(mContext,businessIdentification,sonBusinessIdentification);
    }

    /**
     * 获取登录UID信息
     *
     * @return uid, userCode, deptCode, ip, port
     */
    public List<String> getLoginInfo(Context context){
        return getContentProviderDao().getLoginInfo(context);
    }
    /**
     * 获取水印信息
     * @param context
     * @return  list<0> 用户编号    list<1> 组织编号    list<2> IP地址
     */
    public static List<String> getWaterMarkInfo(Context context){
        return getContentProviderDao().getWaterMarkInfo(context);
    }
}
